#include "fila.h"

//______________________________________________________________________________

// Função de alocação da fila, recebe o tamanho desejado para a fila
void alocFila( Fila* fila )
{
    fila->v0  = 0;
    fila->n   = 0;
}

//______________________________________________________________________________

// * Retorna 1 caso haja valor e 0 caso não haja
// * O valor é retornado em val
unsigned char pop( Fila* fila, unsigned int* val)
{
    if( fila->n == 0 ) return 0;
    
    *val = fila->vet[ fila->v0++ ];    
    
    fila->v0 %= TAM_FILA;
    fila->n--;
    
    return 1;
}

//______________________________________________________________________________

// Coloca um elemento na fila
// * Retorna 1 caso seja possível e 0 caso a fila esteja cheia
unsigned char push( Fila* fila, unsigned int val)
{
    if( fila->n == TAM_FILA ) return 0;
    
    fila->vet[ (fila->v0 + fila->n++) % TAM_FILA ] = val;
    
    return 1;
}

//______________________________________________________________________________

// Exclui todos os elementos da fila
void clearFila( Fila* fila )
{
    fila->v0 = 0;
    fila->n  = 0;
}

//______________________________________________________________________________
